/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package paquetevistas.compra;

import Seguridad.Controlador.Validacion;
import Seguridad.Controlador.controladorseguridad;
import controlador.almacen.controladoralmacen;
import controlador.compra.controladorcompra;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.JOptionPane;
import modelos.Producto;
import modelos.Productoxproveedor;
import modelos.Proveedor;
import modelos.Usuario;

/**
 *
 * @author Jacklin
 */
public class AsignarProveedorProducto extends javax.swing.JInternalFrame {

    public static controladoralmacen mycontroladoralmacen = new controladoralmacen();
    public static controladorcompra mycontroladorcompra = new controladorcompra();
    public static Validacion validacion = new Validacion();

    //Para el registro de Log
    public static Usuario usuario = lbj.LBJ.Login.usuario;
    public static controladorseguridad mycontroladorseguridad = new controladorseguridad();
    
    /**
     * Creates new form AsignarProveedorProducto
     */
    public AsignarProveedorProducto() {
        initComponents();
        Date hoy = new Date();
        jfechaVigencia.setMinSelectableDate(hoy);
        loadcomponents();
    }

    void loadcomponents() {
        Proveedor proveedor = lbj.LBJ.Login.escritorio.proveedor.proveedoraeditar;
        jproveedor.setText(proveedor.getRazonsocial());
        List<Producto> productos = new ArrayList<Producto>();
        productos = mycontroladoralmacen.sacaproductos();
        List<Productoxproveedor> prodxprov = new ArrayList<Productoxproveedor>();
        prodxprov = mycontroladorcompra.sacaprodxprovbyid(proveedor.getIdproveedor());
        int cont = 0;
        if (prodxprov.isEmpty()) {
            for (int i = 0; i < productos.size(); i++) {
                if (productos.get(i).getEstado() == 1 && (productos.get(i).getTipoproducto().getIdtipoproducto() == 1 || productos.get(i).getTipoproducto().getIdtipoproducto() == 2)) {
                    jComboProd.addItem(productos.get(i).getNombre());
                }
            }
        } else {
            for (int i = 0; i < productos.size(); i++) {
//                System.out.println(productos.get(i).getEstado());
//                System.out.println(productos.get(i).getTipoproducto().getIdtipoproducto() );
                if (productos.get(i).getEstado() == 1 && (productos.get(i).getTipoproducto().getIdtipoproducto() == 1 || productos.get(i).getTipoproducto().getIdtipoproducto() == 2)) {
                    for (int j = 0; j < prodxprov.size(); j++) {
                        if (prodxprov.get(j).getId().getIdproducto() == productos.get(i).getIdproducto()) {
                            cont = 1;
                        }
                    }
                    if (cont == 0) {
                        jComboProd.addItem(productos.get(i).getNombre());
                    } else {
                        cont = 0;
                    }
                }
            }
        }
        jComboProd.setSelectedIndex(0);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLayeredPane1 = new javax.swing.JLayeredPane();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jComboProd = new javax.swing.JComboBox();
        jLabel3 = new javax.swing.JLabel();
        jprecio = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jcantidad = new javax.swing.JTextField();
        jproveedor = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        jfechaVigencia = new com.toedter.calendar.JDateChooser();
        jLayeredPane2 = new javax.swing.JLayeredPane();
        jButton1 = new javax.swing.JButton();
        jLabel9 = new javax.swing.JLabel();
        jButton3 = new javax.swing.JButton();
        jLabel12 = new javax.swing.JLabel();
        jButton5 = new javax.swing.JButton();
        jLabel13 = new javax.swing.JLabel();

        setClosable(true);
        setIconifiable(true);
        setTitle("Asignar Productos a Proveedor");

        jLabel1.setText("Proveedor:");
        jLayeredPane1.add(jLabel1);
        jLabel1.setBounds(30, 20, 100, 14);

        jLabel2.setText("Producto:");
        jLayeredPane1.add(jLabel2);
        jLabel2.setBounds(30, 60, 100, 14);

        jComboProd.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Seleccionar un producto" }));
        jComboProd.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboProdActionPerformed(evt);
            }
        });
        jLayeredPane1.add(jComboProd);
        jComboProd.setBounds(160, 60, 170, 20);

        jLabel3.setText("Precio (S/.):");
        jLayeredPane1.add(jLabel3);
        jLabel3.setBounds(30, 140, 90, 10);

        jprecio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jprecioActionPerformed(evt);
            }
        });
        jLayeredPane1.add(jprecio);
        jprecio.setBounds(160, 130, 170, 20);

        jLabel4.setText("Cantidad Máx:");
        jLayeredPane1.add(jLabel4);
        jLabel4.setBounds(30, 100, 110, 14);

        jcantidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jcantidadActionPerformed(evt);
            }
        });
        jcantidad.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jcantidadKeyTyped(evt);
            }
        });
        jLayeredPane1.add(jcantidad);
        jcantidad.setBounds(160, 100, 170, 20);

        jproveedor.setEnabled(false);
        jLayeredPane1.add(jproveedor);
        jproveedor.setBounds(160, 20, 170, 20);

        jLabel5.setText("Fecha de vigencia:");
        jLayeredPane1.add(jLabel5);
        jLabel5.setBounds(30, 170, 120, 14);
        jLayeredPane1.add(jfechaVigencia);
        jfechaVigencia.setBounds(160, 170, 170, 20);

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/save.png"))); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jLayeredPane2.add(jButton1);
        jButton1.setBounds(50, 10, 65, 41);

        jLabel9.setText("Guardar");
        jLayeredPane2.add(jLabel9);
        jLabel9.setBounds(60, 60, 70, 14);

        jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/limpiar.png"))); // NOI18N
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        jLayeredPane2.add(jButton3);
        jButton3.setBounds(160, 10, 59, 40);

        jLabel12.setText("Limpiar");
        jLayeredPane2.add(jLabel12);
        jLabel12.setBounds(170, 60, 70, 14);

        jButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/error 1.png"))); // NOI18N
        jButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton5ActionPerformed(evt);
            }
        });
        jLayeredPane2.add(jButton5);
        jButton5.setBounds(260, 10, 60, 40);

        jLabel13.setText("Cancelar");
        jLayeredPane2.add(jLabel13);
        jLabel13.setBounds(270, 60, 60, 14);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(53, 53, 53)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 365, Short.MAX_VALUE)
                    .addComponent(jLayeredPane2))
                .addGap(63, 63, 63))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 205, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLayeredPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jprecioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jprecioActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jprecioActionPerformed

    private void jComboProdActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboProdActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jComboProdActionPerformed

    private void jcantidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcantidadActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jcantidadActionPerformed

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        // TODO add your handling code here:
        jComboProd.setSelectedIndex(0);
        jcantidad.setText("");
        jprecio.setText("");
        jfechaVigencia.setDate(null);
    }//GEN-LAST:event_jButton3ActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed

        if (jComboProd.getSelectedIndex() == 0) {
            JOptionPane.showMessageDialog(null, "Debe seleccionar un producto");
        } else if (validacion.es_vacio(jcantidad.getText())) {
            JOptionPane.showMessageDialog(null, validacion.msj + "Cantidad máxima");
        } else if (!validacion.es_numero_real(jcantidad.getText())) {
            JOptionPane.showMessageDialog(null, validacion.msj);
        } else if (Float.parseFloat(jcantidad.getText()) <= 0) {
            JOptionPane.showMessageDialog(null, "Debe colocar un número mayor a 0");
        } else if (validacion.es_vacio(jprecio.getText())) {
            JOptionPane.showMessageDialog(null, validacion.msj + "Precio");
        } else if (!validacion.es_numero_real(jprecio.getText())) {
            JOptionPane.showMessageDialog(null, validacion.msj);
        } else if (Float.parseFloat(jprecio.getText()) <= 0) {
            JOptionPane.showMessageDialog(null, "Debe colocar un número mayor a 0");
        } else if (jfechaVigencia.getDate() == null) {
            JOptionPane.showMessageDialog(null, "Debe seleccionar una fecha de vigencia");
        } 
//            else {
//            if (mycontroladorcompra.esprodDelprv(jComboProd.getSelectedItem().toString(),jproveedor.getText())) {
//                JOptionPane.showMessageDialog(null, "Este producto ya ha sido asociado al proveedor");
//            } 
            else {
                if (JOptionPane.showConfirmDialog(rootPane, "¿Desea realmente editar este proveedor?",
                        "Mensaje", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                    Proveedor proveedor = lbj.LBJ.Login.escritorio.proveedor.proveedoraeditar;
                    String producto = jComboProd.getSelectedItem().toString();
                    Integer cantidad = Integer.parseInt(jcantidad.getText());
                    Float precio = Float.parseFloat(jprecio.getText());
                    Date fecha = jfechaVigencia.getDate();
                    mycontroladorcompra.agregarproductosxprov(proveedor, producto, cantidad, precio, fecha);
                    lbj.LBJ.Login.escritorio.proveedor.refreshSupplierTable();
                    //this.setVisible(false);
                    int row=jComboProd.getSelectedIndex();
                    jComboProd.removeItemAt(row);
                    jComboProd.setSelectedIndex(0);
                    jcantidad.setText("");
                    jprecio.setText("");
                    jfechaVigencia.setDate(null);
                    JOptionPane.showMessageDialog(this, "Se asignó correctamente el producto al proveedor");
                    
                    mycontroladorseguridad.insertarlog(usuario, new Date(), "Insertar", "Productoxproveedor", "Registrar Productoxproveedor");
//                this.dispose();
                }
//            }
        }

    }//GEN-LAST:event_jButton1ActionPerformed

    private void jcantidadKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jcantidadKeyTyped
        // TODO add your handling code here:
        char car = evt.getKeyChar();
        if ((car < '0' || car > '9') && (car != (char) KeyEvent.VK_BACK_SPACE)) {
            evt.consume();
            JOptionPane.showMessageDialog(this, "Debe insertar solo números enteros");

        }
    }//GEN-LAST:event_jcantidadKeyTyped

    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
        // TODO add your handling code here:
        if(JOptionPane.showConfirmDialog(null, "¿Está seguro de cancelar la asignación?",
            "Mensaje",JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){
        lbj.LBJ.Login.escritorio.proveedor.refreshSupplierTable();
        this.dispose();
        }
    }//GEN-LAST:event_jButton5ActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton5;
    private javax.swing.JComboBox jComboProd;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JLayeredPane jLayeredPane1;
    private javax.swing.JLayeredPane jLayeredPane2;
    private javax.swing.JTextField jcantidad;
    private com.toedter.calendar.JDateChooser jfechaVigencia;
    private javax.swing.JTextField jprecio;
    private javax.swing.JTextField jproveedor;
    // End of variables declaration//GEN-END:variables
}
